#include<stdio.h>
void swap(int*p,int a,int b)
{
	int c=*(p+a);
	*(p+a)=*(p+b);
	*(p+b)=c;
}
void quick(int*p,int low,int high)
{
	if(low>=high)
		return; 
	int i=low+1;
	int j=low+1;
	int sign=*(p+low);
	while(j<=high)//使j遍历数组
	{
		if(sign>*(p+j)) 
		{
			swap(p,i,j);
			i++;
		}
		/*
		当i=j时，若if成立，则比sign小的数字位置不改变；
		若i!=j，若if成立，则将比sign小的数移至j左侧，换比sign大的数
		 
		*/
		j++;
	} 
	swap(p,low,i-1);
	/*
	若循环中不发生互换，则i处右侧均大于sign，i处左侧均小于sign
	*/
	quick(p,low,i-2);
	quick(p,i,high);
}
void print(int*p,int m)
{
	int i=0;
	while(m--)
	{
		printf("%d ",*(p+i));
		i++;
	}
}
int main()
{
	int m=0;
	scanf("%d",&m);
	int arr[100]={0};
	for(int i=0;i<m;i++)
	{
		arr[i]=i*i-5*i;
	}
	print(arr,m);
	printf("\n");
	int low=0;
	int high=m-1;
	quick(arr,low,high);
	print(arr,m);
}